/*
 * @lc app=leetcode.cn id=8 lang=javascript
 *
 * [8] 字符串转换整数 (atoi)
 */

// @lc code=start
/**
 * @param {string} s
 * @return {number}
 */
var myAtoi = function(s) {
  let isNegative = 0 // -1负数 1正数
  let num = 0
  for (let i = 0; i < s.length; i++) {
    // 排除空格
    if (isNegative === 0 && s[i] === ' ') {
      continue
    }
    // 取符号
    if (isNegative === 0 && (s[i] === '+' || s[i] === '-')) {
      if (s[i] === '-') {
        isNegative = -1
      } else {
        isNegative = 1
      }
    }
    // 取值, 并禁止取符号
    else if (s[i] >= '0' && s[i] <= '9') {
      if (isNegative === 0) isNegative = 1
      num = (num * 10) + (s[i] * 1)
    }
    // 出现非法值
    else {
      break
    }
  }
  num = num * isNegative
  let maxNum = Math.pow(2, 31)
  if (num < -maxNum) {
    num = -maxNum
  } else if (num > maxNum - 1) {
    num = maxNum - 1
  }
  // console.log(num)
  return num

  // let num = parseInt(s)
  // if (Number.isNaN(num)) return 0
  // let maxNum = Math.pow(2, 31)
  // if (num < -maxNum) {
  //   num = -maxNum
  // } else if (num > maxNum - 1) {
  //   num = maxNum - 1
  // }
  // return num
}
// myAtoi("words and 987")
// myAtoi("42")
// @lc code=end

